home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / MUI / DEFTII15.LHA / Deft II / Sources / Arexx.em < prev    next >
Encoding:
Text File  |  1994-11-06  |  10.8 KB  |  330 lines

  1. OPT MODULE
  2.  
  3.  
  4. ->*****
  5. ->** External modules
  6. ->*****
  7. MODULE 'muimaster' , 'libraries/mui'
  8. MODULE 'tools/boopsi'
  9. MODULE 'utility/tagitem' , 'utility/hooks'
  10. MODULE 'tools/installhook'
  11.  
  12. MODULE '*Locale'
  13. MODULE '*Defs'
  14. MODULE '*Errors'
  15. MODULE '*GUI_MUIB'
  16. MODULE '*Work'
  17. MODULE '*PrefsFile'
  18. MODULE '*Paths'
  19. MODULE '*DefaultTools'
  20.  
  21.  
  22. ->*****
  23. ->** Global variables
  24. ->*****
  25. EXPORT DEF deftII                    :    PTR TO obj_app
  26. EXPORT DEF cat                        :    PTR TO catalog_DeftII
  27. EXPORT DEF modified                    :    LONG
  28. EXPORT DEF current_edited_path        :    LONG
  29. EXPORT DEF current_edited_def_tool    :    LONG
  30.  
  31.  
  32. /********************************************************************************************************/
  33. /* Initializes the object which gives arexx information needed for the MUI application at creation time */
  34. /********************************************************************************************************/
  35. EXPORT PROC init_arexx()
  36.  
  37.     DEF arexx : PTR TO obj_arexx
  38.     DEF arexx_commands : PTR TO mui_command
  39.     DEF number_paths_hook            :    PTR TO hook
  40.     DEF number_default_tools_hook    :    PTR TO hook
  41.     DEF add_path_hook                :    PTR TO hook
  42.     DEF add_default_tool_hook        :    PTR TO hook
  43.     DEF delete_path_hook            :    PTR TO hook
  44.     DEF delete_default_tool_hook    :    PTR TO hook
  45.     DEF get_path_hook                :    PTR TO hook
  46.     DEF get_old_default_tool_hook    :    PTR TO hook
  47.     DEF get_new_default_tool_hook    :    PTR TO hook
  48.     DEF save_prefs_hook                :    PTR TO hook
  49.     DEF go_hook                        :    PTR TO hook
  50.     DEF loose_modifications_hook    :    PTR TO hook
  51.  
  52.     NEW    arexx , arexx_commands[ 13 ] ,
  53.         number_paths_hook            ,
  54.         number_default_tools_hook    ,
  55.         add_path_hook                ,
  56.         add_default_tool_hook        ,
  57.         delete_path_hook            ,
  58.         delete_default_tool_hook    ,
  59.         get_path_hook                ,
  60.         get_old_default_tool_hook    ,
  61.         get_new_default_tool_hook    ,
  62.         save_prefs_hook                ,
  63.         go_hook                        ,
  64.         loose_modifications_hook
  65.  
  66.     installhook(    number_paths_hook            ,     {number_paths}                )
  67.     installhook(    number_default_tools_hook    ,    {number_default_tools}        )
  68.     installhook(    add_path_hook                ,    {arexx_add_path}            )
  69.     installhook(    add_default_tool_hook        ,    {arexx_add_default_tool}    )
  70.     installhook(    delete_path_hook            ,    {arexx_delete_path}            )
  71.     installhook(    delete_default_tool_hook    ,    {arexx_delete_default_tool}    )
  72.     installhook(    get_path_hook                ,    {get_path}                    )
  73.     installhook(    get_old_default_tool_hook    ,    {get_old_default_tool}        )
  74.     installhook(    get_new_default_tool_hook    ,    {get_new_default_tool}        )
  75.     installhook(    save_prefs_hook                ,    {arexx_save_prefs}            )
  76.     installhook(    go_hook                        ,    {arexx_go}                    )
  77.     installhook(    loose_modifications_hook    ,    {loose_modifications}        )
  78.  
  79.     arexx.commands := arexx_commands
  80.     init_command( arexx.commands[] , 'number_paths' , '' , 0 , number_paths_hook  )
  81.     init_command( arexx.commands[1] , 'number_default_tools' , '' , 0 , number_default_tools_hook )
  82.     init_command( arexx.commands[2] , 'add_path' , 'PATH/A' , 1 , add_path_hook )
  83.     init_command( arexx.commands[3] , 'add_default_tool' , 'OLD/A,NEW/A' , 2 , add_default_tool_hook )
  84.     init_command( arexx.commands[4] , 'delete_path' , 'PATH/N/A' , 1 , delete_path_hook )
  85.     init_command( arexx.commands[5] , 'delete_default_tool' , 'DEFAULT_TOOL=DT/N/A' , 1 , delete_default_tool_hook )
  86.     init_command( arexx.commands[6] , 'get_path' , 'PATH/N/A' , 1 , get_path_hook )
  87.     init_command( arexx.commands[7] , 'get_old_default_tool' , 'OLD_DEFAULT_TOOL=ODT/N/A' , 1 , get_old_default_tool_hook)
  88.     init_command( arexx.commands[8] , 'get_new_default_tool' , 'NEW_DEFAULT_TOOL=NDT/N/A' , 1 , get_new_default_tool_hook )
  89.     init_command( arexx.commands[9] , 'save_prefs' , '' , 0 , save_prefs_hook )
  90.     init_command( arexx.commands[10] , 'go' , '' , 0 , go_hook )
  91.     init_command( arexx.commands[11] , 'loose_modifications' , '' , 0 , loose_modifications_hook )
  92.     installhook( arexx.error , {arexx_error} )
  93.  
  94. ENDPROC arexx
  95.  
  96.  
  97. /***************************************/
  98. /** Initializes an mui_command object **/
  99. /***************************************/
  100. PROC init_command( command : PTR TO mui_command , name : PTR TO CHAR , template : PTR TO CHAR , parameters , hook_func )
  101.  
  102.     command.mc_name := name
  103.     command.mc_template := template
  104.     command.mc_parameters := parameters
  105.     command.mc_hook := hook_func
  106.  
  107. ENDPROC
  108.  
  109.  
  110. /*************************************************************************/
  111. /* Arexx hook function which returns the number of paths in the listview */
  112. /*************************************************************************/
  113. PROC number_paths()
  114.  
  115.     DEF number_entries
  116.     DEF return_string[ 10 ] : STRING
  117.  
  118.     get( deftII.lv_paths , MUIA_List_Entries , {number_entries} )
  119.     set( deftII.app , MUIA_Application_RexxString , StringF( return_string , '\d' , number_entries ) )
  120.  
  121. ENDPROC 0
  122.  
  123.  
  124. /*********************************************************************************/
  125. /* Arexx hook function which returns the number of default_tools in the listview */
  126. /*********************************************************************************/
  127. PROC number_default_tools()
  128.  
  129.     DEF number_entries
  130.     DEF return_string[ 10 ] : STRING
  131.  
  132.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  133.     set( deftII.app , MUIA_Application_RexxString , StringF( return_string , '\d' , number_entries ) )
  134.  
  135. ENDPROC 0
  136.  
  137.  
  138. /*********************************************************/
  139. /* Arexx hook function to add a path inside the listview */
  140. /*********************************************************/
  141. PROC arexx_add_path( hook , obj , arg_array : PTR TO LONG )
  142.  
  143.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_paths )
  144.  
  145. ENDPROC add_path( arg_array[] )
  146.  
  147.  
  148. /*****************************************************************/
  149. /* Arexx hook function to add a default tool inside the listview */
  150. /*****************************************************************/
  151. PROC arexx_add_default_tool( hook , obj , arg_array : PTR TO LONG )
  152.  
  153.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_default_tools )
  154.  
  155. ENDPROC add_default_tool( arg_array[] , arg_array[ 1 ] )
  156.  
  157.  
  158. /************************************************************/
  159. /* Arexx hook function to delete a path inside the listview */
  160. /************************************************************/
  161. PROC arexx_delete_path( hook , obj , arg_array : PTR TO LONG )
  162.  
  163.     DEF entry , number_entries , return = 0
  164.  
  165.     entry := Long( arg_array[] )
  166.     get( deftII.lv_paths , MUIA_List_Entries , {number_entries} )
  167.  
  168.     IF ( entry >= 0 ) AND ( entry < number_entries )
  169.  
  170.         set( deftII.lv_paths , MUIA_List_Quiet , MUI_TRUE )
  171.         domethod( deftII.lv_paths , [ MUIM_List_Remove , entry ] )
  172.         set( deftII.lv_paths , MUIA_List_Quiet , FALSE )
  173.  
  174.     ELSE
  175.  
  176.         return := 10
  177.  
  178.     ENDIF
  179.  
  180.     current_edited_path := NO_CURRENT_EDITED_PATH
  181.     set( deftII.stR_PA_path , MUIA_String_Contents , '' )
  182.  
  183.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_paths )
  184.  
  185. ENDPROC return
  186.  
  187.  
  188. /********************************************************************/
  189. /* Arexx hook function to delete a default tool inside the listview */
  190. /********************************************************************/
  191. PROC arexx_delete_default_tool( hook , obj , arg_array : PTR TO LONG )
  192.  
  193.     DEF entry , number_entries , return = 0
  194.  
  195.     entry := Long( arg_array[] )
  196.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  197.  
  198.     IF ( entry >= 0 ) AND ( entry < number_entries )
  199.  
  200.         set( deftII.lv_default_tools , MUIA_List_Quiet , MUI_TRUE )
  201.         domethod( deftII.lv_default_tools , [ MUIM_List_Remove , entry ] )
  202.         set( deftII.lv_default_tools , MUIA_List_Quiet , FALSE )
  203.  
  204.     ELSE
  205.  
  206.         return := 10
  207.  
  208.     ENDIF
  209.  
  210.     current_edited_def_tool := NO_CURRENT_EDITED_DEF_TOOL
  211.     domethod( deftII.app , [ MUIM_MultiSet , MUIA_String_Contents , '' ,
  212.             deftII.stR_old_def_tool , deftII.stR_PO_new_def_tool , NIL ] )
  213.  
  214.     set( deftII.wi_main , MUIA_Window_ActiveObject , deftII.lv_default_tools )
  215.  
  216. ENDPROC return
  217.  
  218.  
  219. /*******************************************************/
  220. /* Arexx hook function to get from the listview a path */
  221. /*******************************************************/
  222. PROC get_path( hook , obj , arg_array : PTR TO LONG )
  223.  
  224.     DEF entry_number , entry : PTR TO CHAR
  225.     DEF number_entries , return = 0
  226.  
  227.     entry_number := Long( arg_array[] )
  228.     get( deftII.lv_paths , MUIA_List_Entries , {number_entries} )
  229.  
  230.     IF ( entry_number >= 0 ) AND ( entry_number < number_entries )
  231.  
  232.         domethod( deftII.lv_paths , [ MUIM_List_GetEntry , entry_number , {entry} ] )
  233.         set( deftII.app , MUIA_Application_RexxString , entry )
  234.  
  235.     ELSE
  236.  
  237.         return := 10
  238.  
  239.     ENDIF
  240.  
  241. ENDPROC return
  242.  
  243.  
  244. /********************************************************************/
  245. /* Arexx hook function to get from the listview an old default tool */
  246. /********************************************************************/
  247. PROC get_old_default_tool( hook , obj , arg_array : PTR TO LONG )
  248.  
  249.     DEF entry_number , entry : PTR TO default_tool
  250.     DEF number_entries , return = 0
  251.  
  252.     entry_number := Long( arg_array[] )
  253.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  254.  
  255.     IF ( entry_number >= 0 ) AND ( entry_number < number_entries )
  256.  
  257.         domethod( deftII.lv_default_tools , [ MUIM_List_GetEntry , entry_number , {entry} ] )
  258.         set( deftII.app , MUIA_Application_RexxString , entry.old )
  259.  
  260.     ELSE
  261.  
  262.         return := 10
  263.  
  264.     ENDIF
  265.  
  266. ENDPROC return
  267.  
  268.  
  269. /*******************************************************************/
  270. /* Arexx hook function to get from the listview a new default tool */
  271. /*******************************************************************/
  272. PROC get_new_default_tool( hook , obj , arg_array : PTR TO LONG )
  273.  
  274.     DEF entry_number , entry : PTR TO default_tool
  275.     DEF number_entries , return = 0
  276.  
  277.     entry_number := Long( arg_array[] )
  278.     get( deftII.lv_default_tools , MUIA_List_Entries , {number_entries} )
  279.  
  280.     IF ( entry_number >= 0 ) AND ( entry_number < number_entries )
  281.  
  282.         domethod( deftII.lv_default_tools , [ MUIM_List_GetEntry , entry_number , {entry} ] )
  283.         set( deftII.app , MUIA_Application_RexxString , entry.new )
  284.  
  285.     ELSE
  286.  
  287.         return := 10
  288.  
  289.     ENDIF
  290.  
  291. ENDPROC return
  292.  
  293.  
  294. /*********************************************/
  295. /* Saves the preferences file from the Arexx */
  296. /*********************************************/
  297. PROC arexx_save_prefs() IS save_prefs( FALSE )
  298.  
  299.  
  300. /*************************************************************************/
  301. /* The function which runs the icon default tool replacements from Arexx */
  302. /*************************************************************************/
  303. PROC arexx_go()
  304.  
  305.     domethod( deftII.app , [ MUIM_MultiSet , MUIA_Disabled , MUI_TRUE ,
  306.             deftII.gr_paths , deftII.gr_default_tools ,
  307.             deftII.bt_go , deftII.bt_save_prefs , deftII.bt_about , deftII.bt_quit , NIL ] )
  308.  
  309. ENDPROC go( FALSE )
  310.  
  311.  
  312. /********************************************************************/
  313. /* Hook function to loose any modification track of the preferences */
  314. /********************************************************************/
  315. PROC loose_modifications()
  316.  
  317.     modified := FALSE
  318.  
  319. ENDPROC 0
  320.  
  321.  
  322. /*********************************************************************************/
  323. /* This hook function is called when an unknown arexx command is sent to Deft II */
  324. /*********************************************************************************/
  325. PROC arexx_error()
  326.  
  327.     deftII_error( cat.msg_Unknown_Arexx_Command.getstr() )
  328.  
  329. ENDPROC 100
  330.